{% if isFramework("javascript") %}
Implement this interface to create a tool panel component.
{% /if %}

{% if isFramework("javascript") %}
```ts
interface IToolPanelComp {
    // mandatory methods

    // Returns the DOM element for this Tool Panel
    getGui(): HTMLElement;

    // optional methods

    // The init(params) method is called on the tool panel once upon component initialisation.
    init(params: IToolPanelParams): void;

    // Called when `api.refreshToolPanel()` is called (with the current params).
    // Also called when the `sideBar` grid option is updated (with the updated params).
    // When `sideBar` is updated, if this method returns `true`,
    // then the grid will take no further action.
    // Otherwise, the tool panel will be destroyed and recreated.
    refresh(params: IToolPanelParams): boolean | void;

    // If saving and restoring state, this should return the current state
    getState(): any;
}
```
{% /if %}

{% if isFramework("javascript") %}
The interface for the init parameters is as follows:
{% /if %}
